package com.yunsom.testdemo.util;

public class RedisUtil {

//  private RedisTemplate<String, Object> redisTemplate;
//
//  public Boolean setIfAbsent(String key, Object value, long expireTime) {
//    return redisTemplate.opsForValue()
//        .setIfAbsent(generateKey(key), value, expireTime, TimeUnit.SECONDS);
//  }
//
//  public Boolean exist(String key) {
//    return redisTemplate.hasKey(generateKey(key));
//  }
//
//  public void set(String key, Object value, long expireTime) {
//    redisTemplate.opsForValue().set(generateKey(key), value, expireTime, TimeUnit.SECONDS);
//  }
//
//  private static String generateKey(String key) {
//    return "machine:status:" + key;
//  }
//
//  public Object get(String key) {
//    return redisTemplate.opsForValue().get(generateKey(key));
//  }
//
//  public Object getWithoutPrefix(String key) {
//    return redisTemplate.opsForValue().get((key));
//  }
//
//  public Long increment(String key) {
//    return redisTemplate.opsForValue().increment(generateKey(key));
//  }
//
//  public void expire(String key, Long ttl) {
//    redisTemplate.expire(generateKey(key), ttl, TimeUnit.SECONDS);
//  }
//
//  /**
//   * 尝试获取分布式锁
//   *
//   * @param key             锁键
//   * @param value           值
//   * @param timeoutInMinute 锁自动超时时间，分钟
//   * @return 是否获取到锁
//   */
//  public boolean tryLock(String key, String value, long timeoutInMinute) {
//    Boolean success = redisTemplate.opsForValue().setIfAbsent(generateKey(key), value);
//    if (success) {
//      redisTemplate.expire(generateKey(key), timeoutInMinute, TimeUnit.MINUTES);
//    }
//
//    return success;
//  }
//
//  /**
//   * 释放锁
//   *
//   * @param key 锁键
//   */
//  public void unlock(String key) {
//    redisTemplate.delete(generateKey(key));
//  }
//
//  /**
//   * 队列 入队
//   *
//   * @param key    队列key
//   * @param values 队列值
//   * @return 数量
//   */
//  public Long enqueue(String key, Object... values) {
//    return redisTemplate.opsForList().leftPushAll(generateKey(key), values);
//  }
//
//  /**
//   * 队列 出队
//   *
//   * @param key 队列key
//   * @return 队列元素
//   */
//  public Object dequeue(String key) {
//    return redisTemplate.opsForList().rightPop(generateKey(key));
//  }
}
